import { Add_Todos, Delete_Todos, Updata_Done, Checke_All, Clear_Done } from '../actions/todo-action';

const initialState =
  [
    { id: '001', name: '吃饭', done: true },
    { id: '002', name: '睡觉', done: true },
    { id: '003', name: '敲代码', done: false }
  ]


export default function todoReducer(state = initialState, action) {
  switch (action.type) {
    case Add_Todos: {
      return [
        ...state,
        action.payload
      ]
    }
    case Delete_Todos: {
      const newTodos = state.filter(todo => {
        return todo.id !== action.payload.id
      })
      return newTodos
    }
    case Updata_Done: {
      const newTodos = state.map(todo => {
        if (todo.id === action.payload.id) {
          return { ...todo, done: action.payload.done }
        }
        else {
          return todo
        }

      })
      return newTodos
    }
    case Checke_All: {
      const newTodos = state.map(todo => {
        return { ...todo, done: action.payload.flag }
      })
      return newTodos
    }
    case Clear_Done: {
      const newTodos = state.filter(todo => {
        return todo.done === false
      })
      return newTodos
    }
    default:
      return state;
  }
}